package com.ming.config;

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 广播交换机配置
 */
@Configuration
public class FanoutConfiguration {
    /**
     * 创建广播交换机
     * name: 交换机的名称
     * isDurable: 是否持久化 默认true
     * @return FanoutExchange
     */
    @Bean
    public FanoutExchange fanoutExchange() {
        // new FanoutExchange("fanoutExchange");  // 创建方式1
        return ExchangeBuilder.fanoutExchange("mt.fanout2").durable(true).build();  // 创建方式2
    }

    /**
     * 创建队列
     * @return Queue
     */
    @Bean
    public Queue fanoutQueue3() {
        // new Queue("mt.fanout3");  // 创建方式1
        return QueueBuilder.durable("fanout.queue3").build();  // 创建方式2
    }

    @Bean
    public Queue fanoutQueue4() {
        // new Queue("mt.fanout3");  // 创建方式1
        return QueueBuilder.durable("fanout.queue4").build();  // 创建方式2
    }

    /**
     * 绑定交换机与队列之间的关系 方式1
     * @return Binding
     */
    @Bean
    public Binding fanoutBinding3() {
        return BindingBuilder.bind(fanoutQueue3()).to(fanoutExchange());
    }

    /**
     * 绑定交换机与队列之间的关系 方式2
     * @param fanoutQueue4 队列
     * @param fanoutExchange 交换机
     * @return Binding
     */
    @Bean
    public Binding fanoutBinding4(Queue fanoutQueue4, FanoutExchange fanoutExchange) {
        return BindingBuilder.bind(fanoutQueue4).to(fanoutExchange);
    }
}
